import os

from langchain_community.llms import Tongyi
from langchain.prompts import ChatPromptTemplate
from langchain_community.utilities import WikipediaAPIWrapper

# 1. key，temperature， 视频标题，视频时长

def generation_to_radio_text(key, temperature, subject, time):
    """根据视频标题，视频时长以及指定的模型随机性来生成视频文本"""
    os.environ["DASHSCOPE_API_KEY"] = key
    llm = Tongyi(temperature=temperature)

    title_prompt_context = ChatPromptTemplate.from_messages(
        [
            ("human", "请为##{subject}##这个主题像一个吸引人的标题")
        ]
    )

    script_prompt_context = """
        # Context(上下文)#
        我想根据以下视频标题以及视频时长生成一段热门视频文稿，脚本内容可以结合以下维基百科搜索出的信息，但是仅供参考，只结合相关的即可，对不相关的内容不需要进行考虑。
        
        视频标题: {title}
        
        视频时长: {time}
        
        维基百科搜索结果: {search_content}
        
        # Objective（目的） #
        帮我写一篇内容完整，层次分明，带有搞笑和与人互动性的视频文稿，目的在于通俗易懂的向人介绍这个视频潜在的意义。
        
        # Style(样式) #
        要求开头抓住眼球，中间提供干货内容，结尾有惊喜，脚本的格式也安装【开头，中间，结尾】分隔。
        
        # Tone(语调)#
        亲和，轻松有趣，吸引年轻人
        
        # AUDIENCE(受众) #
        这个视频文案面对的核心人员当代年轻人，请针对这一个群体的特征去定制视频文案
        
        # RESPONSE(响应)#
        层次感分明，详细且简洁
    
    """

    script_prompt_template = ChatPromptTemplate.from_messages(
        [
            ("human",script_prompt_context)
        ]
    )

    # 进行标题的获取
    title_prompt = title_prompt_context.invoke({"subject": subject})

    title_context = llm.invoke(title_prompt)

    print(title_context)

    # 根据标题进行维基百科的搜索
    search_object = WikipediaAPIWrapper(lang="zh")
    search_content = search_object.run(title_context)

    # 调用获取内容接口
    script_prompt = script_prompt_template.invoke({"title":title_context,"time":time,"search_content":search_content})

    script_context = llm.invoke(script_prompt)

    return search_content,title_context,script_context

# generation_to_redbook("sk-a76667095fa84061921429bb64b22758",1,"抖音","2分钟")